package org.dromara.travel.domain.bo;

import org.dromara.travel.domain.Events;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 活动业务对象 events
 *
 * @author Jacheut
 * @date 2024-04-05
 */
@Data
@AutoMapper(target = Events.class, reverseConvertGenerate = false)
public class EventsBo {

    /**
     * 活动ID，自增主键
     */
    @NotNull(message = "活动ID，自增主键不能为空", groups = { EditGroup.class })
    private Long id;

    /**
     * 活动标题
     */
    @NotBlank(message = "活动标题不能为空", groups = { AddGroup.class, EditGroup.class })
    private String title;

    /**
     * 活动详细描述
     */
    @NotBlank(message = "活动详细描述不能为空", groups = { AddGroup.class, EditGroup.class })
    private String description;

    /**
     * 地点ID，参考locations表中的id
     */
    @NotNull(message = "地点ID，参考locations表中的id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long locationId;

    /**
     * 活动开始日期和时间
     */
    @NotNull(message = "活动开始日期和时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date startDate;

    /**
     * 活动结束日期和时间，若无结束时间则为空
     */
    @NotNull(message = "活动结束日期和时间，若无结束时间则为空不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date endDate;

    /**
     * 活动封面
     */
    @NotBlank(message = "活动封面不能为空", groups = { AddGroup.class, EditGroup.class })
    private String cover;

    /**
     * 费用最小值
     */
    @NotNull(message = "费用最小值不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long costMin;

    /**
     * 费用最大值
     */
    @NotNull(message = "费用最大值不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long costMax;

    /**
     * 是否收取活动报名费
     */
    @NotNull(message = "是否收取活动报名费不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long registrationFeeFlag;

    /**
     * 活动报名费
     */
    @NotNull(message = "活动报名费不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long registrationFee;

    /**
     * 创建该活动的用户ID，参考users表中的id
     */
    @NotNull(message = "创建该活动的用户ID，参考users表中的id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long creatorId;

    /**
     * 活动类别:Sports,Music,Art,Food
     */
    @NotBlank(message = "活动类别:Sports,Music,Art,Food不能为空", groups = { AddGroup.class, EditGroup.class })
    private String category;

    /**
     * 活动类型，1:户外运动
     */
    @NotNull(message = "活动类型，1:户外运动不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long eventType;

    /**
     * 是否审批，0:未审批，1:审批通过，2:审批拒绝
     */
    private Long isApprove;

    /**
     * 审批描述
     */
    private String approveMsg;


}
